#ifndef TIRES_H
#define TIRES_H

#include "lvgl/lvgl.h"
#include "ui/ui.h"
#include <stdio.h>

// 轮胎位置枚举
typedef enum {
    TIRE_FRONT_LEFT = 0,
    TIRE_FRONT_RIGHT,
    TIRE_REAR_LEFT,
    TIRE_REAR_RIGHT
} TirePosition;

// 正常范围定义
#define NORMAL_PRESSURE_MIN 210  // 正常胎压最小值(kPa)
#define NORMAL_PRESSURE_MAX 230  // 正常胎压最大值(kPa)
#define NORMAL_TEMP_MIN 90       // 正常温度最小值(℃)
#define NORMAL_TEMP_MAX 110       // 正常温度最大值(℃)

// 轮胎状态结构体
typedef struct {
    int pressure;      // 胎压(kPa)
    int temperature;   // 温度(℃)
    bool is_normal;    // 是否在正常范围内
} TireStatus;

// 轮胎UI对象结构体
typedef struct {
    lv_obj_t *ty_box;         // 正常状态框
    lv_obj_t *jg_box;         // 警告状态框
    lv_obj_t *ty_label;       // 胎压标签
    lv_obj_t *temp_label;     // 温度标签
    lv_obj_t *ty_status_label;// 胎压状态标签
    lv_obj_t *temp_status_label; // 温度状态标签
} TireUIObjects;

/**
 * @brief 更新单个轮胎状态
 * @param position 轮胎位置
 * @param pressure 胎压值(kPa)
 * @param temperature 温度值(℃)
 */
void update_tire_status(TirePosition position, int pressure, int temperature);

/**
 * @brief 检查所有轮胎状态
 * @return 所有轮胎是否都正常
 */
void check_all_tires();

// 添加函数声明
void init_tire_ui_objects();

int get_tire_pressure(TirePosition position);
int get_tire_temperature(TirePosition position);

// 异步设置接口
void set_tire_pressure(TirePosition position, int pressure);
void set_tire_temperature(TirePosition position, int temperature);
void set_tire_pressure_and_temperature(TirePosition position, int pressure, int temperature);

void update_tire_status_async(void *arg);

#endif // TIRES_H